<?php
//Ultima verificacion: 13-10-2014 ; 21-11-2014 ; 20-02-2015
class M_asignatura extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las asignaturas existentes menos las borradas (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT asignatura.*, curso.idCicloLectivo, division.nombre AS division, curso.nombre AS curso, turno.nombre AS turno,
											(SELECT espacioescolar.nombre FROM espacioescolar WHERE espacioescolar.idEspacioEscolar=asignatura.idEspacioEscolar AND espacioescolar.estado<>-1 LIMIT 1) as espacioEscolar, 
											DATE_FORMAT(asignatura.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada,
											DATE_FORMAT(asignatura.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM asignatura, division, curso, ciclolectivo, turno
									  WHERE asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											asignatura.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											curso.estado=1 AND 
											division.estado=1 AND 
											asignatura.estado<>-1 AND 
											turno.estado=1 $restriccion
									  ORDER BY asignatura.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener las asignaturas activas
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT asignatura.*, curso.idCicloLectivo, division.nombre AS division, curso.nombre AS curso, turno.nombre AS turno,
											(SELECT espacioescolar.nombre FROM espacioescolar WHERE espacioescolar.idEspacioEscolar=asignatura.idEspacioEscolar AND espacioescolar.estado<>-1 LIMIT 1) as espacioEscolar, 
											DATE_FORMAT(asignatura.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(asignatura.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM asignatura, division, curso, ciclolectivo, turno
									  WHERE asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											asignatura.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											curso.estado=1 AND 
											division.estado=1 AND 
											asignatura.estado=1 AND 
											turno.estado=1 $restriccion
									  ORDER BY asignatura.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una asignatura
	function eliminar($idAsignatura=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `asignatura`
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `asignatura`.`idAsignatura` = " . $this->db->escape($idAsignatura) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una asignatura
	function crear($hash=null, $idDivision=null, $idPlanEstudio=null, $idEspacioEscolar=null, $idTurno=null, $nombre=null, $abreviatura=null, $colorDeFondo=null, $colorDeTexto=null, $dificultad=null, $canalDeStreaming=null, $idArchivo=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `asignatura` (`idAsignatura`,`hash`,`idDivision`,`idPlanEstudio`,`idEspacioEscolar`,`idTurno`,`nombre`,`abreviatura`,`colorDeFondo`,`colorDeTexto`,`dificultad`,`canalDeStreaming`,`idArchivo`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
										           (NULL,".$this->db->escape($hash).",".$this->db->escape($idDivision).",".$this->db->escape($idPlanEstudio).",".$this->db->escape($idEspacioEscolar).",".$this->db->escape($idTurno).",".$this->db->escape($nombre).",".$this->db->escape($abreviatura).",".$this->db->escape($colorDeFondo).",".$this->db->escape($colorDeTexto).",".$this->db->escape($dificultad).",".$this->db->escape($canalDeStreaming).",".$this->db->escape($idArchivo).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una asignatura en particular usada generalmente en el formulario de modificar
	function get($idAsignatura=null){
		$consulta = $this->db->query("SELECT asignatura.*, division.nombre AS division, curso.nombre AS curso, division.idDivision, curso.idCurso, curso.idCicloLectivo, turno.nombre AS turno,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=asignatura.idArchivo LIMIT 1) AS hashArchivo,
											(SELECT espacioescolar.nombre FROM espacioescolar WHERE espacioescolar.idEspacioEscolar=asignatura.idEspacioEscolar AND espacioescolar.estado<>-1 LIMIT 1) as espacioEscolar,
											(SELECT planestudio.nombre FROM planestudio WHERE planestudio.idPlanEstudio=asignatura.idPlanEstudio AND planestudio.estado<>-1 LIMIT 1) as planEstudio
									  FROM asignatura, division, curso, ciclolectivo, turno
									  WHERE asignatura.idDivision=division.idDivision AND 
											division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											asignatura.estado<>-1 AND 
											division.estado<>-1 AND 
											curso.estado<>-1 AND 
											ciclolectivo.estado<>-1 AND 
											turno.estado<>-1 AND 
											asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la asignatura contigua a una en particular usada generalmente en el formulario de modificar
	function getContiguo($idAsignatura=null, $cant=null, $idCicloLectivo=null, $idTurno=null, $idCurso=null, $idDivision=null){
		//1111
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso != 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision);
		}
		
		//1110
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso != 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso);
		}
		
		//1101
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso == 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno || $consulta->row()->idDivision != $idDivision);
		}
		
		//1100
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso == 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno);
		}
		
		//1011
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso != 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision);
		}
		
		//1010
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso != 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso);
		}
		
		//1001
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso == 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo  || $consulta->row()->idDivision != $idDivision);
		}
		
		//1000
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso == 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo);
		}
		
		//0111
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso != 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision);
		}
		
		//0110
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso != 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso);
		}
		
		//0101
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso == 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno || $consulta->row()->idDivision != $idDivision);
		}
		
		//0100
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso == 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno);
		}
		
		//0011
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso != 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCurso != $idCurso || $consulta->row()->idDivision != $idDivision);
		}
		
		//0010
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso != 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCurso != $idCurso);
		}
		
		//0001
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso == 0 && $idDivision != 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idDivision != $idDivision);
		}
		
		//0000
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso == 0 && $idDivision == 0){
			do{
				$idAsignatura+=$cant;
				$consulta = $this->db->query("SELECT asignatura.*, division.idDivision, curso.idCicloLectivo, curso.idCurso, curso.idTurno, turno.estado AS estadoTurno
											  FROM asignatura, division, curso, turno
											  WHERE asignatura.idDivision=division.idDivision AND 
													division.idCurso=curso.idCurso AND 
													curso.idTurno=turno.idTurno AND 
													asignatura.idAsignatura=".$this->db->escape($idAsignatura)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1');
		}
		
		return($consulta->row()->idAsignatura);
	}
	
	//Este metodo se utiliza para modificar una asignatura
	function modificar($idAsignatura=null, $idDivision=null, $idPlanEstudio=null, $idEspacioEscolar=null, $idTurno=null, $nombre=null, $abreviatura=null, $colorDeFondo=null, $colorDeTexto=null, $dificultad=null, $canalDeStreaming=null, $idArchivo=null, $descripcion=null, $estado=null){
		$consulta = $this->db->query("UPDATE `asignatura`
									 SET `idDivision` = ". $this->db->escape($idDivision) .",
										 `idPlanEstudio` = ". $this->db->escape($idPlanEstudio) .",
										 `idEspacioEscolar` = ". $this->db->escape($idEspacioEscolar) .",
										 `idTurno` = ". $this->db->escape($idTurno) .",
									     `nombre` = ". $this->db->escape($nombre) .",
										 `abreviatura` = ". $this->db->escape($abreviatura) .",
										 `colorDeFondo` = ". $this->db->escape($colorDeFondo) .",
										 `colorDeTexto` = ". $this->db->escape($colorDeTexto) .",
										 `dificultad` = ". $this->db->escape($dificultad) .",
										 `canalDeStreaming` = ". $this->db->escape($canalDeStreaming) .",
										 `idArchivo` = ". $this->db->escape($idArchivo) .",
										 `descripcion` = ". $this->db->escape($descripcion) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `asignatura`.`idAsignatura` = " . $this->db->escape($idAsignatura) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>